<?  
 /** 
* @generator Le Classificateur 2.01 beta 
* @author Yann Boisclair-Roy 
* @date 2008/06/16
* @desc Classe qui contrôle les données de la table vue_classement
*/  
 
 class Classement {

 	/**
 	* @desc Flag qui détermine si la recherche devra se faire avec des LIKE '%%' ou des " = "
 	* @var boolean
 	*/
 	var $rechercheExact = true; 
 
 	/**
 	* @desc Objet de connexion à la base de données
 	* @var Bd
 	*/
 	var $oBd; 
 	/**
 	* @desc Variable qui contient un bout de SQL qui déterminera l'ordre selon les voeux de l'usager
 	* @var string
 	*/
 	var $ordre; 
 	/**
 	* @desc Variable qui contient un bout de SQL qui déterminera la limite selon les voeux de l'usager
 	* @var String
 	*/
 	var $limite; 
 	/**
 	* @desc Variable qui contient un Array des résultats provenant de la requête SQL par GetInfos
 	* @var Array
 	*/
 	var $resultat; 
 	/**
 	* @desc Variables équivalente au champs noMontagne de la table vue_classement
 	* @var int
 	*/
 	 var $noMontagne;
 
 	/**
 	* @desc Variables équivalente au champs moyenne de la table vue_classement
 	* @var float
 	*/
 	 var $moyenne;
 
 	/**
 	* @desc Variables équivalente au champs nbVotes de la table vue_classement
 	* @var int
 	*/
 	 var $nbVotes;
 

 	/**
 	* @desc Constructeur de la class vue_classement. Si à l'instenciation de la classe on lui donne un numéro de clé primaire, 
 	*  celle-ci instenciera la class avec toutes les infos dans la table vue_classement concernant cette clé primaire.
 	* @access public
 	* @param	Bd	oBd
 	* @param int noMontagne
 	*/
 	 function Classement ( $oBd, $noMontagne = 0 ) { 
 	 	 $this->oBd = $oBd; 
  	 	 if( $noMontagne > 0 ) {  
  	 	 	 $this->noMontagne = $noMontagne; 
  	 	 	 $this->getInfos(); 
  	 	 } 
 	 }  
 
   	/**
 	* @desc Fonction mutatrice du champ noMontagne
 	* @access public
 	* @param intnoMontagne
 	*/
	function setNoMontagne ( $noMontagne ) {
		$this->noMontagne = intval( $noMontagne );
	}


 	/**
 	* @desc Fonction accesseur du champ noMontagne
 	* @access public
 	* @return int
 	*/
	 function getNoMontagne (){
	 	 return stripslashes( noMontagne);
	}


 	/**
 	* @desc Fonction mutatrice du champ moyenne
 	* @access public
 	* @param floatmoyenne
 	*/
	function setMoyenne ( $moyenne ) {
		$this->moyenne = addslashes( $moyenne ) ;
	}


 	/**
 	* @desc Fonction accesseur du champ moyenne
 	* @access public
 	* @return float
 	*/
	 function getMoyenne (){
	 	 return stripslashes( moyenne);
	}


 	/**
 	* @desc Fonction mutatrice du champ nbVotes
 	* @access public
 	* @param intnbVotes
 	*/
	function setNbVotes ( $nbVotes ) {
		$this->nbVotes = intval( $nbVotes );
	}


 	/**
 	* @desc Fonction accesseur du champ nbVotes
 	* @access public
 	* @return int
 	*/
	 function getNbVotes (){
	 	 return stripslashes( nbVotes);
	}


 	/**
 	* @desc Fonction mutatrice de la limite
 	* @access public
 	* @param string limite
 	*/
 	 function setLimite( $limite ) {  
 	 	 $this->limite =  $limite;  
 	 }  
 
   	/**
 	* @desc Fonction mutatrice de l'ordre
 	* @access public
 	* @param string ordre
 	*/
 	 function setOrdre( $ordre ) {  
 	 	 $this->ordre =  $ordre;  
 	 }  
 
   	/**
 	* @desc Fonction mutatrice de resultats
 	* @access public
 	* @return Array Resultats
 	*/
 	 function getResultats() {  
 	 	 return $this->resultats;  
 	 }  
 
   	/**
 	* @desc Fonction d'ajout et de mise à jour des données.
 	* @access public
 	* @return int
 	*/
	 function sauvegarde() { 
  		 if( empty( $this->noMontagne ) ) { 
 			 $req = "INSERT INTO vue_classement ( noMontagne, moyenne, nbVotes 	)  VALUES  ( " . $this->noMontagne . ", " . $this->moyenne . ", " . $this->nbVotes . ") ON DUPLICATE KEY UPDATE noMontagne = " . $this->noMontagne . ", moyenne = " . $this->moyenne . ", nbVotes = " . $this->nbVotes . ""; 
  			 $this->oBd->query( $req );
 			 $no = $this->oBd->getId(); 
 			 $this->noMontagne = $no; 
 		 } else { 
 			 $req = "UPDATE vue_classement SET noMontagne = " . $this->noMontagne . ", moyenne = " . $this->moyenne . ", nbVotes = " . $this->nbVotes . " WHERE noMontagne = " . $this->noMontagne;
 			 $this->oBd->query( $req );
 			 $no = $this->noMontagne;
 		 }
 		 return $no;  
 	 }  
  
  	/**
 	* @desc Fonction de recherche de données
 	* @access public
 	* @param string champs
 	*/
 	 function getInfos( $champs = "*" ) {
  		$variables = array( 'noMontagne','moyenne','nbVotes'); 
  		 $trouve = false; 
 		 $recherche = ' 1 = 1 '; 
 		 $operateurDebut = " = '"; 
 		 $operateurFin = "'"; 
 		 if( !$this->rechercheExact ) {  
  			 $operateurDebut = " LIKE '%"; 
  			 $operateurFin = "%'"; 
  		 }  
  		 for ( $i = 0; $i < count( $variables ); $i++ ) { 
 			if ( !empty( $this->$variables[ $i ] ) ) {  
 				 $trouve = true; 
 				 /* Ajout de l'opérateur */ 
  				 if ( !empty( $recherche ) ) { 
 					 $recherche .= " AND "; 
 				 } 
  				 $variable = $variables[ $i ];
 				 $tableau = $this->$variable;
 				 $valeur = $tableau[ 0 ];
 				 /* Concaténation des critères de recherche */ 
  				 if ( is_numeric( $valeur ) ) { 
 					 $recherche .= "vue_classement." . $variables[ $i ] . " = " . $valeur. " "; 
 				 } else { 
 					 $recherche .= "vue_classement." . $variables[ $i ] . $operateurDebut . addslashes( $valeur ) . $operateurFin; 
 				 } 
  			 } 
  		 } 
  		 $infos = $this->oBd->query( "SELECT " . $champs . " FROM vue_classement WHERE " . $recherche . $this->ordre . $this->limite ); 
 		 $this->resultats = $infos;
 		 $this->cleanup();
 		 for ( $i = 0; $i < count( $infos ); $i++ ) { 
	 	 	$this->noMontagne = $infos[ $i ][ 'noMontagne'] ; 
	 	 	$this->moyenne = $infos[ $i ][ 'moyenne'] ; 
	 	 	$this->nbVotes = $infos[ $i ][ 'nbVotes'] ; 
 		 } 
  	} 
  	/**
 	* @desc Fonction de suppression des données.
 	* @access public
 	*/
 	function delete() {
 		 $req = "DELETE FROM vue_classement WHERE noMontagne = " . $this->noMontagne; 
  		 $this->oBd->query( $req );
 	 } 

 	/**
 	* @desc Indique si la recherche dois etre exact ou pas ( true = LIKE '%x%' )" ),
 	* @access public
 	*/
 	 function setRechercheExact( $b ) {  
 	 	 $this->rechercheExact =  $b;  
 	 }  
 
   	/**
 	* @desc Fonction remet les variables membres à zéro
 	* @access private
 	*/
 	 function cleanup() { 
 	 	$this->noMontagne = array(); 
  	 	$this->moyenne = array(); 
  	 	$this->nbVotes = array(); 
  	 }  
 
  }
?>